# 矩形拼接

def shape_line_count(arr):
    """
    10/10 10分
    三个矩形拼接可以设想为一个在顶部, 另外两个分列左右的情况
    8个边: 顶部的边不等于底部两个边之和, 且底部的两个矩形的任意边也没有相等的情况
    6个边:   1. 顶部的边可以覆盖底部, 但是底部的两个矩形的剩余边没有相等的情况
            2. 顶部的边不能覆盖底部, 但是底部的两个边有相等
            3. 顶部两个矩形堆叠组成一个矩形,
    4个边: 1.顶部的边等于底部两边之和, 且底部的剩余边相等
          2. 三个矩形都有一个相同的边, 三个矩形依次堆叠
    """
    # 查找是否有合适的顶部矩形 判断任意两边之和是否等于另一个矩形的一个边
    res = 8
    for a in range(6):
        for b in range(6):
            for c in range(6):
                # 三个矩形堆叠
                if arr[a] == arr[b] == arr[c] and a // 2 != b // 2 and a // 2 != c // 2 and b // 2 != c // 2:
                    return 4
                # 有一个合适的顶部的矩形
                if arr[a] == arr[b] + arr[c] and a // 2 != b // 2 and a // 2 != c // 2 and b // 2 != c // 2:
                    # b1 和 c1表示左右两个矩形的另一条边
                    b1 = b - 1 if b % 2 == 1 else b + 1
                    c1 = c - 1 if c % 2 == 1 else c + 1
                    if arr[b1] == arr[c1]:
                        return 4
                    else:
                        res = min(6, res)
                if (arr[a] == arr[b] and a // 2 != b // 2) or (arr[b] == arr[c] and b // 2 != c // 2) \
                        or (arr[a] == arr[c] and a // 2 != c // 2):  # 两个矩形堆叠
                    res = min(6, res)

    # 如果没有任何符合要求的, 那么就是8个边
    return res


if __name__ == '__main__':
    # n = int(input())
    # for _ in range(n):
    #     print(shape_line_count(list(map(int, input().split()))))
    print(shape_line_count([2, 3, 4, 1, 2, 4]))
    print(shape_line_count([1, 2, 3, 4, 5, 6]))
    print(shape_line_count([3, 2, 3, 1, 1, 1]))
